💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    미니프로젝트11 | ✅저자: 이유정(박사)

    프로젝트 코드명: FlattenFibTree 프로젝트 유형: 재귀 기반 피보나치 트리 시뮬레이터 + 평탄화

    🖥️ 프로젝트 개요

    사용자가 입력한 수 n에 대해 피보나치 수열의 재귀 호출 구조를 트리로 시뮬레이션하고, 그 트리 구조를 담은 중첩 리스트를 반환한 뒤, 평탄화된 값의 합과 항목들을 출력합니다.
    

    ◽ 이 프로젝트를 통해 자연스럽게 적용되는 내용

    • 재귀 함수에서의 구조적 출력
    • 피보나치 수열의 호출 트리 생성
    • 리스트 평탄화총합 계산
    • 조기 리턴, 메모화 없이 순수 재귀 구현

    📄 기능 요구사항 (Functional Requirements)

    • fib_tree(n) 함수: 피보나치 계산 구조를 중첩 리스트 형태로 생성
    • flatten() 함수: 리스트를 평탄화하여 모든 수 추출
    • 평탄화된 항목 합계 및 항목 리스트 출력

    📄 비기능 요구사항 (Non-Functional Requirements)

    • n <= 0 입력 시 "0보다 큰 정수를 입력하세요." 출력
    • 중첩 구조 유지하며 피보나치 호출 흐름 그대로 표현

    ✅ 출력 포맷 구성:

    피보나치 호출 구조: [1, [1, [1, 0]], [1, 0]]
    평탄화 결과: [1, 1, 1, 0, 1, 0]
    총합: 4
    

    ✅ 정답 코드:

    def fib_tree(n):
        if n <= 0:
            return 0
        if n == 1:
            return 1
        return [fib_tree(n - 1), fib_tree(n - 2)]
    
    def flatten(data):
        result = []
        for item in data:
            if isinstance(item, list):
                result += flatten(item)
            else:
                result.append(item)
        return result
    
    n = 4
    if n <= 0:
        print("0보다 큰 정수를 입력하세요.")
    else:
        tree = fib_tree(n)
        print("피보나치 호출 구조:", tree)
        flat = flatten(tree)
        print("평탄화 결과:", flat)
        print("총합:", sum(flat))
    

    🔍 코드 해설:

    • fib_tree(n)은 숫자 대신 재귀 호출 트리를 그대로 리스트로 표현
    • flatten()은 재귀적으로 트리를 평탄화하여 숫자 목록 생성
    • 출력 결과는 재귀 호출의 구조와 총합을 동시에 확인 가능
    • 재귀의 흐름을 시각화하고 데이터화하는 실무 기반 사고 훈련
    TOP
    preload preload